home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Tests / Passed / test48.pl < prev    next >
Encoding:
Text File  |  1989-04-14  |  880 b   |  44 lines

  1.  
  2. /* Copyright (C) 1988, 1989 Herve' Touati, Aquarius Project, UC Berkeley */
  3.  
  4. /*
  5.  * using set and access as rudimentary garbage collection
  6.  * assert ---> for set
  7.  * retract ---> for access
  8.  */
  9.  
  10. main :-
  11.     list1(X),
  12.     qsort(X,Y),
  13.         set(Y),
  14.     fail.
  15. main :-
  16.         access(Y),
  17.     write(Y), nl.
  18.  
  19. qsort([],[]) :- !.
  20. qsort([A|As], B) :-
  21.     filter(A, As, Smaller, Greater),
  22.     qsort(Smaller, SmallerSorted),
  23.     qsort(Greater, GreaterSorted),
  24.     append(SmallerSorted, [A|GreaterSorted], B).
  25.  
  26. filter(A,[],[],[]) :- !.
  27. filter(A, [B|Bs], [B|Cs], Ds) :-
  28.     A > B,
  29.     filter(A, Bs, Cs, Ds).
  30. filter(A, [B|Bs], Cs, [B|Ds]) :-
  31.     A =< B,
  32.     filter(A, Bs, Cs, Ds).
  33.  
  34. append([], X, X) :- !.
  35. append([X|Xs], Y, [X|Zs]) :-
  36.     append(Xs, Y, Zs).
  37.  
  38. list1([3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,98]).
  39.  
  40.  
  41. access(N) :- access(0,N).
  42. set(N) :- set(0,N).
  43.  
  44.